package Class_Object.抽象;


abstract class Shape {

    public abstract void draw();//被abstract修饰的方法抽象方法
    //1.使用abstract修饰的方法和类就成为抽象方法,抽象类
    //抽象类是不可以进行实例化的
    //抽象类可以和普通类一样定义普通的变量和方法
    //普通类继承继承这个抽象类,那么需要重写这个类当中的所有抽象方法
    //抽象类的出现,就是为了被继承
    //abstract和fianl不能共存
    //被private static 修饰也是不可以的
}
abstract class A extends Shape {
    public abstract void testA();
}
class B extends A {
    @Override
    public void draw() {
        //终究要重写
    }

    @Override
    public void testA() {

    }
}
public class TestDemo extends Shape{

    @Override
    public void draw() {
        System.out.println("画东西");
    }
    public static void drawMap(Shape shape) {
        shape.draw();
    }

    public static void main(String[] args) {
        Shape shape = new TestDemo();
        drawMap(shape);

    }
}
